import cv2
import numpy as np
import os

# 1. 读取图像
script_dir = os.path.dirname(os.path.abspath(__file__))
input_path = os.path.join(script_dir, 'images', 'true.jpg')
output_path = os.path.join(script_dir, 'images', 'true.png')

img = cv2.imread(input_path)

# 2. 将图像转换为HSV或者RGB，便于分割
#   （此处如果背景是纯白，可以直接对RGB的值进行阈值判断）
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 3. 设置白色范围（阈值可根据实际情况调整）
lower_white = np.array([0, 0, 100])    # 近似白色下限
upper_white = np.array([180, 25, 255]) # 近似白色上限

# 4. 根据阈值生成掩模
mask = cv2.inRange(hsv, lower_white, upper_white)

# 5. 将掩模反转（背景为白色，所以掩模区域是背景部分）
mask_inv = cv2.bitwise_not(mask)

# 6. 保留原图中的印章部分
res = cv2.bitwise_and(img, img, mask=mask_inv)

# 7. 将黑色部分（原先的背景）改为透明
#    先转换为 BGRA 格式
res_bgra = cv2.cvtColor(res, cv2.COLOR_BGR2BGRA)
#    将mask_inv为0的部分设置为透明
res_bgra[:, :, 3] = mask_inv

# 8. 保存结果（PNG格式可保留透明通道）
# 确保输出目录存在
os.makedirs(os.path.dirname(output_path), exist_ok=True)
cv2.imwrite(output_path, res_bgra)
